約 2,734,962 件
https://w.atwiki.jp/hiron/pages/6.html
.net関連 ☆技術 マルチスレッド ☆言語
https://w.atwiki.jp/vfmad/pages/255.html
最終更新:2011-06-18 VF.NET VF4から実装されたカードシステム。それに付随するネットシステム。 ネット対応とカードシステムは、今のゲーム業界では主流になったが、この当時(2001年)かなり革新的なモノだった。 2011年5月24日(火) 店舗データの「詳しい情報を見る」に住所が記載されている場合、地図サイト(外部サイト)より、現在地からの経路や店舗周辺の地図などを表示することができるようになりました。 この機会に、是非ご利用ください。 ▼店舗検索 [VFワールド]→[▼検索機能・店舗/大会等]→(店舗検索・VF5FS設置店舗) →[店舗データ・詳しい情報を見る]→[店舗詳細・住所項] ※ショートカット・マイ店舗などから確認できる「店舗データ」からも同様に閲覧できます。 ※地図表示は外部サイトの機能になります。 ※地図表示に関するお問い合わせは、外部サイトにて行ってください。 ※お使いの携帯電話版VF.NETによって、外部サイトは異なります。 ※ご使用の端末・設定によっては利用できない場合がございます。ご了承願います。 VFスラング トップページ
https://w.atwiki.jp/hisoukaiji/pages/20.html
- ─- 、 ,. -─;z.. _ , -‐ゝ. !i ′ i!i ii < ルーターのポートの解放ができないか・・・・. ∠..._ !! !i !i i!i \ 棺さ…!. , ' ´!! !ii !ii i!i !i ヽ ∠ -; ‐ !i !i ,、!! ii! !i! !i l お前は「ポート開放は難しい」という名の. , ' i!i , ,ィ ./ーゝ.!ト、i、. 、 !ii i! | 棺の中にいる…! /.イ ,ィ'l/`K  ̄ ,ゝ!ヘ.「ヽ!\ !ii !i|. l/ l===。、 ,, ===。= | r= 、 | 解放できない…. l`ニ/ `ニ二´ |iFvリii| l/ __-, ー- 、 |l_ン | もう満足に… `i ー───一 l ,.ヘ !i i!ト、 お前はネット対戦できない…!. ! --- / ヽ |( ヽ ゙、 / ヽii| )) \ クラ専ばかりの. _,.ヘ. ./ ヽ!( ( ) ) |`T''ー- 人生さ…! _,, ..-‐..T"./)( `イ / ))(( (|....l.......l. .......l.......l.../( )) ) | / )) (( ) )|....l.......l. ......l.......l../)) (( (( | / (( (( ))) (( |....l.......l. .....l.......l/(( );.ベ| /));.べ )) (( )) ) |....l.......l _. -‐- 、 ,. -─;- >- !i! ′ !i!  ̄`>. / i!i !ii i!i i!i \ '7"´!i! i!i ,.、 i!i !i! ゝ いいか ひろ…. イ !!i , ,ィ /-ヽ. ト、 ii! ii |゙ | i!i /l/‐K ̄ ,ゝl‐ヽ!、i! | 試してみろ………! ,h ノ==。= , =。== i r〈 |f_|.| `二ニ | | ニ二´ |.|f,| ポート解放ソフト「UPnPCJ」を ヽ_|| , -‐' 、|_レ ー-、 || ン ハ l ー───一 l ハ http //umemasu.hp.infoseek.co.jp/upnpcj/_,.. -‐1 ( lヽ. == /l ((!`''ー- まずここからダウンロード、自己解凍でもZIPでも好きな方でいい...l.....l....| ) l \ / l )) |....l.....l インストールしたら実行するんだ、そしてWAN_PORTに使用する...l.....l...|(( )l. `ー'´ ,'(( (| ..l.....l ポート番号緋想天なら10800、花映塚なら17723・・UDPにチェックし...l.....l...| ))( ヽ. /;リ )) |...l.....l PORT解放ボタンを押すんだ・・・ルーターが対応してればポートは開く...l.....l..| (( ));.ヘ /へ (( ( |...l.....l 分からなかったら、http //umemasu.hp.infoseek.co.jp/index_help.html を見るなり、各自UPnPCJで検索してくれ。ちなみにポートを閉じることも可能 NET対戦のあとポートを閉じればすればセキュリティ上の問題は何も無い。 ヾ∧ ,.ィ , -''7 ,.ィ ミミヽ/、、ヽ ,.イ ./ l/ ,'/ | , / \\. ,ィ ./ l/ " " レ' |三三\ \l| / l/ レ1 クク… ,r / )=== i ,.、 ,'ィ三 (〃/ | | | .|ヽ /^ヽ._./ \ /ィ ルーターのポートを解放しても…… /l. lミ| | | | /_ u l __ヽ /.三{ |. | | ij U |ヽ l‐-゙ニユ Lニギ-‐'7. "7 ウイルス対策ソフトの. ヽ!. !ミ| | ゝ !=。=、 ,,=。== | r=、 ∠_, ファイアーウォールの.三ミヽ.)| | ゝ l ー-/ ーr '´ l |f‐リ _/ ポート解放も必要 /| ` | ヽ l/ 7 ̄_ , | u |L ソ _,フ 世の中は三 / |. | \ l ‘"____, /l _フ NET対戦一つでも大変だな… / | │ ,>、l __ V | _,ラ\_ ̄ ~`ヽ! l _,,.. -‐''/,r ,. l ヽ/ 「 、 ヽ ヽ.  ̄ なあ… \l ,ィ''" / / / / l___/ /シ、 ヽ.ヽ. ヽ 原田…───‐---ゝ、._ / | / /' / ,イ.l キ /ツ" ト、 l i l `'''ー- 、.._/ / ,/ / | ヾゝ /ジ | ! ! l | ヽニ、 ̄ ̄`ヽ ………なんだかよ……… // _. | ウイルス対策ソフトの種類とバージョンが || ̄|!) | 結構あるから……… 説明しにくい… ム r ト、 | この程度のことでも… 難しい……!. `,⊃| ヽ,. -─ 、 普段は種類が多いからググれって言う……! 7 /∠-──-ゝ、._ 俺は今無理してやってるだけだ………! _,,. -‐''"´ `ヽ しかし基本は同じ…ここを見るんだ /⌒ヽ ト. http //27bit.com/virus.html ! ヽ | ! 三大ウイルス対策ソフトの解放のしかたが載ってる… ト、 l |│ 方法はプログラムを指定するか…ポートを指定するか. ∥ l | ! その程度のことだ、例えば緋想天ならプログラム例外指定で. || | ││ 緋想天インストールフォルダのth~.exeを指定して許可にするだけ そうすればポートは番号を指定せずとも開く…! ポートを直接指定したい場合は例外プロトコルのUDP 10800 送信 許可……! と受信 許可の二つを別々につくるだけ簡単だ…!これでOK、だが、例外プログラム例外プロトコル どっちか一つやれば問題ないので例外プログラムをオススメする 花映塚の場合はadonis.exeとth~.exe一応両方許可指定なら問題ないはず… ウイルス対策ソフトを入れてなくて… windows標準を使っている人もいるんだろうな…! 基本はおなじだ…… http //support.microsoft.com/kb/884347/ja……! 例外・・プログラムの追加で追加すれば問題ない・・・ あいつ… 赤木は… するだろう……! 何も気にかけず スッ…とプログラム、ポートを許可設定するだろう……! , '"  ̄` ー''⌒ヽ、 / \ 以上のことをしても. / ヽ 緋想天、花映塚、萃夢想の… l ,ィ j`ヘ. ハ .、 l NET対戦が・・・・ │ ,.ィノ-jノ lノ-リ‐l N . |. r'コ.r'=ヒァ= _ ;セァ= |nノ できないなら… l |.ヒ|.| `ー- ' / ー ' ||.|. l. ヽl| u' 冫 ル' まず疑うべきは ヽ ト.、 'ー---- /″ ポート解放が正しくできてる /ヽ|. \ ー , く か!?な気がします……-‐''"| . . . . ト、 \._. イ . . .|`''ー- . . . . | . . . . | \ ,⊆ニ_ヽ、| . . . . . 根拠は . . . .| . . . . .|. / r─--⊃、. . . 経験なんですけど……… . . . | . . . . .| ,.イ `二ニニうヽ. . 赤木さんが確認しろと……… _,,、、-z__ http //anisong.dip.jp/cgi/port-chk/port-menu.pl < ̄ヽ/ < / ̄ ヽ このサイトでポートの解放を……! ∠ ,、 ', 花映塚なら本体やadonis等を起動してない状態で / /| / ヽ l 下にある特定 Port の確認を実行で. |/| /|/-|l、 ゝl-ヽ, | NOに17723を入れて……UDPにチェックをいれ |/r==、__===||-、| Portのチェックを実行するを押せ……と l`ニ゚ノ ヽ゚ニ´ノ|| .l | 注意点はUDPなので確認したい. ',u ヽ ij |‐' .| ソフトを立ち上げていない状態でと・・. ヽヽ三三) ;/ | 結果がOKなら… ヽ; ≡ ;/ ヽ |ヽ、_ _,,、、-‐/ヽ;/ ヽ|/ | `"''‐-、、,,_ ポートの解放に問題はないと…! l lヽ .// | ちなみに 緋想天UDP 10800 l .ヽ/ / 萃夢想UDP 7500 花映塚UDP 17723です。
https://w.atwiki.jp/jennychan/pages/9.html
.NET Framework固有のTipsです。 アプリケーションの設定値 アプリケーション/ユーザごとの設定を簡単に扱える。 マイクロソフト情報(C# で設定を使用する) 要約 ugingに、「System.Configuration」を追加 using System.Configuration; プロジェクトの設定(ソリューションエクスプローラで、プロジェクトを右クリック→プロパティ→設定タブクリック)で、設定値のプロパティを作成する。この時に既定値も指定できる。 データの取得は、Properties.Settings.Default.プロパティ名 string s = Properties.Settings.Default.test1; データの保存は、 Properties.Settings.Default.test1 = "hoge"; Properties.Settings.Default.Save(); ※Saveメソッドを実行しないと保存されない。 設定ファイルの位置は、「Documents and Settings\ ユーザ名 \Local Settings\Application Data\ 会社名 \ アセンブリ名_ハッシュ値 \ アセンブリバージョン \user.config」となるが、会社名を指定しなかった場合は、アセンブリ名が使われる。 DBアクセス(ADO.NET 2.0) 様々なデータベースに対し、統一的に処理を行うために、冗長な手順を踏む必要がある。そのため、どうしても、とっつきにくい構造になってしまっている。 ただし、JDBCも同じような構造のプログラムになっているので、一つ覚えてしまえば、つぶしがが効くとも言える。 接続情報などは、コードに直接記述するのではなく、アプリケーションの設定値を利用するのが望ましい。 小規模なデータで、リレーションを行わないような場合は、DBを使うよりも、XMLを使用して、XPathで検索したほうが手軽な気がする。 使用するクラス DbProviderFactories システムに登録されているDbProviderFactoryインスタンスを管理しているクラス DbProviderFactory プロバイダ情報を格納し、下記クラスのインスタンスを作成するためのクラス JDBCのjava.sql.DriverManagerみないなもの?? DbConnection データベースへの接続状態を表すクラス DbProviderFactoryから取得する JDBCのjava.sql.Connectionに相当する DbCommand DBに対して実行する命令(SQL文など)を表すクラス DbProviderFactoryから取得する JDBCのjava.sql.PreparedStatementに相当する DbDataReader DBに対する問い合わせ結果を表すクラス DbCommand.ExceuteQueryから取得する JDBCのjava.sql.ResultSetに相当する DbDataAdapter DBに対する命令、接続、結果データの格納を表すクラス DbCommandとDataSetの橋渡し役 DataSet メモリ上に展開された、データを階層的に管理するクラス DBの問い合わせ結果などのデータを格納(データはDbDataAdapterから得られる)し、問い合わせ処理に問題が無ければ、1つ以上のDataTableクラスオブジェクトを持つ事になる なお、問い合わせ結果が1万行あれば、1万行分のデータをメモリに展開する DataTable 一つのテーブルに対するデータを格納するクラス DataColumn 列情報を格納するクラス DataColumnCollection テーブル内の全ての列情報を格納するクラス DataColumnのコレクション DataRow 行情報を格納するクラス DataRowCollection テーブル内の全ての行情報を格納するクラス DataRowのコレクション 流れ(問い合わせの場合) // DbProviderFactoryのインスタンスを作成 DbProviderFactory dbProvider = DbProviderFactories.GetFactory("System.Data.OleDb"); // DbProviderFactoryのインスタンスからDbConnectionを取得 DbConnection dbCon = dbProvider.CreateConnection(); // DbConnectionに、ConnectionStringを設定し、Openする // DBファイルはtest.mdb(Microsoft Access MDB) dbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=test.mdb"; dbCon.Open(); // この時点で、DBとの接続が完了 // DbProviderFactoryのインスタンスからDbCommandを取得 DbCommand dbCmd = dbProvider.CreateCommand(); // DbCommandに、接続情報(DbConnection)をセット dbCmd.Connection = dbCon; // DbCommandに、問い合わせ文をセット(サンプルなので適当なselect文) dbCmd.CommandText = "select * from foo"; // DbDataAdapterを取得 DbDataAdapter dbAdap = dbProvider.CreateDataAdapter(); // DbDataAdapterに、DbCommandを結びつける dbAdap.SelectCommand = dbCmd; // 問い合わせ結果を受け取るための、DataSetクラスのインスタンスを作成する DataSet ds = new DataSet(); // 問い合わせ結果を取得する dbAdap.Fill(ds); // DataSetは複数のテーブルに対するデータが保存できるので、 // 1つ以上のテーブルデータが保存されているか確認する if (ds.Tables.Count 0) { // 最初のテーブル情報を利用する DataTable dt = ds.Tables[0]; // 問い合わせ結果が1行以上存在するか確認する DataRowCollection rows = dt.Rows; if (rows.Count 0) { // 問い合わせ結果の最初の行の、最初の列の値を出力する System.Console.WriteLine(rows[0][0]); // 問い合わせ結果の最初の行の、列名が「FIELD1」の列の値を出力する System.Console.WriteLine(rows[0]["FIELD1"]); } } // 接続を切断する dbCon.Close(); ということらしい… DataSetとDbDataReader DataSetは、全ての問い合わせ結果をメモリ上にコレクション的に格納する DbDataReaderは、データベースのカーソル的な動作を行う 上記のDataSetを使用した問い合わせ処理 // DbCommandに、問い合わせ文をセット(サンプルなので適当なselect文) dbCmd.CommandText = "select * from foo"; // DbDataAdapterを取得 DbDataAdapter dbAdap = dbProvider.CreateDataAdapter(); // DbDataAdapterに、DbCommandを結びつける dbAdap.SelectCommand = dbCmd; // 問い合わせ結果を受け取るための、DataSetクラスのインスタンスを作成する DataSet ds = new DataSet(); // 問い合わせ結果を取得する dbAdap.Fill(ds); をDbDataReaderを使用すると // DbCommandに、問い合わせ文をセット(サンプルなので適当なselect文) dbCmd.CommandText = "select * from foo"; // 問い合わせ結果を取得する DbDataReader dbReader = cmd.ExecuteReader(); // 一行ずつ処理を行う do { while (dbReader.Read()) { // 列情報を取得する // 列名では取得できない? // 実際の型と異なる形式で取得できない? int f1 = dbReader.GetInt32(0); string f2 = dbReader.GetString(1); string f3 = dbReader.GetString(2); ・・・ } } while (dbReader.NextResult()); // DbDataReaderを使い終わったらCloseする dbReader.Close(); となる。 挿入、更新、削除などのNonQuery処理 DbCommand.ExceuteNonQueryでSQL文の実行が行える。 // DbCommandに、実行したいSQL文をセット(サンプルなので適当なupdate文) dbCmd.CommandText = "update foo set update= 2007-01-02 where id=1"; // SQL文の実行 cmd.ExecuteNonQuery(); パラメータ化されたSQL文 java.sql.PreparedStatementの様に、SQL文中でパラメータを使用する事が可能となる。 // DbCommandに、実行したいSQL文をセット(サンプルなので適当なupdate文) // パラメータマーカーは、DBに依存するそうだが、OLE DBでも、@idの様な記述で問題なく動く dbCmd.CommandText = "update foo set update=@update where id=@id"; // パラメータの情報を設定 // DBに依存しないコードは記述できない??? // OLD DBの場合、パラメータを名前で判断していないので、 // パラメータの出現順とAddメソッドが同期していなければいけない // また、実際のパラメータ名と異なる名前を使用してもエラーにならず、正しく処理される dbCmd.Parameters.Add(new OleDbParameter("@update", OleDbType.Date)); dbCmd.Parameters.Add(new OleDbParameter("@id", OleDbType.Numeric)); // パラメータに値を設定 // dbCmd.Parameters[0].Value = 2007-01-02 としてもよいが、パラメータ名を使用して値を設定できる dbCmd.Parameters["@update"].Value = 2007-01-02 ; dbCmd.Parameters["@id"].Value = 1; // SQL文の実行 cmd.ExecuteNonQuery(); ADO.NET 2.0でOLE DB、Oracle、SqlServerなど、個々のDBに依存したクラスを使用せずに、DbXxxxクラスでコードが記述できると言っているが、パラメータの型指定などでは、使用するDBに依存するコードとなってしまうらしい。 また、複数の行に対する処理の場合、 // DbCommandに、実行したいSQL文をセット(サンプルなので適当なupdate文) dbCmd.CommandText = "update foo set update=@update where id=@id"; // パラメータの情報を設定 dbCmd.Parameters.Add(new OleDbParameter("@update", OleDbType.Date)); dbCmd.Parameters.Add(new OleDbParameter("@id", OleDbType.Numeric)); // パラメータに値を設定 dbCmd.Parameters["@update"].Value = 2007-01-02 ; dbCmd.Parameters["@id"].Value = 1; // SQL文の実行 cmd.ExecuteNonQuery(); // 次の処理のためのパラメータに値を設定 // 直前の処理と同じSQL文であれば、パラメータ情報を設定しなおす必要は無い dbCmd.Parameters["@update"].Value = DateTime.Now; dbCmd.Parameters["@id"].Value = 2; // SQL文の実行 cmd.ExecuteNonQuery(); とすることも出来る 日付型のパラメータと定義してあれば、DataTime型のデータを設定しても大丈夫らしい。 DataGridView .NET Framework version 2.0から、DataGridコントロールに代わるコントロールとして追加されたもので、DataSourceにデータオブジェクトを指定し、データの表示、編集作業を行う。 DataSourceには、 Visual StudioのGUI操作で作成したデータソースオブジェクト DataSetオブジェクト DataTableオブジェクト が使われる。 データの参照であれば、Visual StudioのGUI操作(データソース構成ウィザード)だけで大抵の処理が実現できてしまう。 Microsoftとしては、データの編集作業も含めて、Visual StudioのGUI操作だけで出来ると主張しているが、一般的なアプリケーションであれば、データの追加、修正作業を行う際には、データの内容、更新確認などの確認処理を経てから実際に更新処理を行うはずなのだが、これらのUI処理まで面倒見てはくれていない。 DataGridViewのDataSourceにDataSetを指定する際には、DataSet内に一つしかテーブルが存在しない状態であっても、「どのテーブルを表示させるのか」という指定が必要になる。 // DataGridViewに表示したいテーブル名 string sMemberName = "foo"; // 問い合わせ結果を受け取るための、DataSetクラスのインスタンスを作成する DataSet ds = new DataSet(); // 問い合わせ結果を取得する dbAdap.Fill(ds, sMemberName); // 対象となるテーブルオブジェクトの存在確認 if (ds.Tables.IndexOf(sMemberName) = 0) { // DataGridViewのDataSourceとDataSetを結びつける dataGridView1.DataSource = ds; // DataMemberプロパティが設定されていないと表示されない dataGridView1.DataMember = sMemberName; } DataGridViewのDataSourceにDataTableを指定する場合は、 // DataGridViewに表示したいテーブル名 string sMemberName = "foo"; // 問い合わせ結果を受け取るための、DataSetクラスのインスタンスを作成する DataSet ds = new DataSet(); // 問い合わせ結果を取得する dbAdap.Fill(ds, sMemberName); // 対象となるテーブルオブジェクトの存在確認 if (ds.Tables.IndexOf(sMemberName) = 0) { // DataGridViewのDataSourceとDataTableを結びつける dataGridView1.DataSource = ds.Tables[sMemberName]; } となる。 さらに、DataAdapterのFillメソッドには、DataTableを指定できるので // 問い合わせ結果を受け取るための、DataTableクラスのインスタンスを作成する DataTable dt = new DataTable(); // 問い合わせ結果を取得する dbAdap.Fill(dt); // DataGridViewのDataSourceとDataTableを結びつける dataGridView1.DataSource = dt; と出来る。 データソース Visual Studio プロジェクトのデータソースとは、アプリケーションから利用可能な データベース オブジェクト Webサービス などのデータを指し、型指定されたDataSetとTableAdapterが用意される。 型指定されたDataSetを使用すると、 ds.Tables["foo"].rows[0]["FIELD1"]; と記述していたコードが ds.foo[0].FIELD1; となる。 フィールド値のNULLチェック(DBNull判定)は、「Is + 列名 + Null」形式のメソッドで判定する。 if ( !ds.foo[0].IsFIELD1Null() ) f1 = ds.foo[0].FIELD1; コレクションのキー部分がプロパティ化されるわけだが、プロパティ化されたということは、単なるObject型データの連想配列として管理していた従来のDataSetと異なり、型が定義されているので、数値列に対して文字列を指定した様な場合、コンパイル時にエラーが出るのでコードの信頼性が高まる。 TableAdapterは、DataAdapterに型指定を追加したバージョン。 このTableAdapterオブジェクトには、挿入、削除、更新、問い合わせなどの機能をGUI操作により作成できる。 パラメータ付クエリは、「TableAdapter クエリの構成ウィザード」を使用して対話的に作成する事が出来、「クエリ ビルダ」ダイアログの「フィルタ」セルにパラメータを指定することで、=条件だけでなく、like条件なども定義できるが、パラメータ名については、使用するDBに依存したものになる。 MSDNのドキュメントを始め、大抵のサンプルでは、フィルタ名として「@param」などの、「@」を冠した名前が使われているが、これは、SQL Serverのパラメータマーカーで、OLE DBの場合は、「?」以外はパラメータとして認識されない。 DbCommandクラスでも、パラメータマーカーはDB依存度が低くなっているのに、TableAdapterでは、DB依存度が高い。 また、DataGridViewとデータソースを結び付けている場合、既定の処理では、FormLoadのイベント処理にデータソースからデータを取得するコードが自動的に追加されるのだが、データソースが存在していない場合、当然、例外が発生する。 自動的に追加されるコードは、try~catchで囲まれた形で追加されるわけでもなく、また、接続文字列変更や、再接続のためのサポートメソッドも見当たらない。 接続文字列プロパティは、読み取り専用なので直接XMLファイルを書き換えないと変更できないらしい。開発環境と、実稼働環境の接続設定が異なる場合に面倒な事になる。 まともなプロジェクトでは、開発時には実稼働環境を使うことはしないと思うので、この点の使い勝手は悪いとしか言いようが無いが、TableAdapterインスタンスのConnectionプロパティのConnectionStringを再設定するとうまく動いてくれるので、アプリケーションの最初で、接続文字列を設定するコードを記述しろという事か? データベース作成 ADOX.CatalogClassを使用する事でデータベースを作成できるらしい。 ただし、データベースによっては作成できないものもあると思われる。 ADOX namespaceは、「Microsoft ADO Ext. 2.x for DDL and Security」に含まれているらしい。 ADOX.CatalogClassクラスのCreateメソッドの引数に、データベースへの接続文字列を指定することで作成する。 string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=test.mdb"; ADOX.CatalogClass cat = new ADOX.CatalogClass(); cat.Create(sConnectionString ); XML 従来からInternet Explorerの一部として配布されていたMSXMLがあったが、.NET FrameworkのXMLクラスは、様々な点で使い勝手が良くなっている。 C言語から使用する場合、文字列をBSTRなどの形にしないといけなかったが、C#言語の場合は、メモリ管理は自動だし、始めからUnicode対応なので、そのまま扱える 何も指定しなくても、改行やインデントされた状態でファイルへ出力できる ほぼCOMインターフェース直接アクセスに近いMSXMLと違い、自動でメモリ管理をしてくれるので、Nodeの参照カウンタ管理などを気にせずに使える など ところで、.NET FrameworkのXMLクラスは、ファイルの先頭がXML宣言( ?xml…)でないとエラーになるらしい。コメントであっても。 MS-XMLでは問題なかったのだが…。 また、二つのXMLオブジェクトの結合を行う場合、自身の子ノードでないノードをAppendChildなどで追加させる事になるのだが、自分がCreateしたノード以外のノードを追加する事が出来ないので、ImportNodeメソッドでコピーを作成した後にノードを追加する。 XmlDocument doc1 = new XmlDocument(); XmlDocument doc2 = new XmlDocument(); doc1.Load("test1.xml"); doc2.Load("test2.xml"); XmlNodeList lst = doc1.SelectNodes("/foo/*"); XmlNode parent = doc2.SelectSingleNode("/foo"); foreach (XmlNode node in lst) { parent.AppendChild(doc2.ImportNode(node, true)); } LINQ LINQ(Language Integrated Query 統合言語クエリ)とは、.Net Framework 3.5から導入された、プログラム言語に統合されたクエリ機能。 一般的な問い合わせであれば、LINQだけで記述できるらしいので、複数のデータベースシステムへの対応が容易になる(可能性がある)。 また、プログラム言語の構文の一つと言う事から、表の列と、変数の比較処理も記述できる。 今までは、存在しない表、列を使用したSQL文を記述しても、実行時エラーが発生することはあっても、コンパイルエラーが発生することは無かった。 しかし、プログラム言語に統合される事により、存在しない表、列を指定した問い合わせ処理に対して、コンパイル時にエラーを検出する事が可能となる。 また、型指定されたDataSetと同様、列の型も管理しているので、数値列に対して文字列との比較、代入を行うような処理に対してもコンパイルエラーが発生する。 マイクロソフトのサイトでは、DataContextの作成は // DataContext で接続文字列を取得します。 DataContext db = new DataContext("c \\northwind\\northwnd.mdf"); と記述されているが、これは、SQL Serverでしか有効ではない。 つまり、AccessのMDBファイルを使用したいときなどは、この様な記述では例外が発生し正しく動作しない。 SQL Server以外のDBに対してDataContextを作成する場合は、IDbConnectionを引数にしたコンストラクタを使用することで可能となる。 // DbProviderFactoryのインスタンスを作成 DbProviderFactory dbProvider = DbProviderFactories.GetFactory ("System.Data.OleDb"); // DbProviderFactoryのインスタンスからDbConnectionを取得 DbConnection dbCon = dbProvider.CreateConnection(); // DbConnectionに、ConnectionStringを設定し、Openする // DBファイルはtest.mdb(Microsoft Access MDB) dbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=test.mdb"; // DbConnectionのオブジェクトから、DataContextを作成する DataContext db = new DataContext(dbCon); ※こんな面倒な事をしなくても、 // 接続文字列 string sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=test.mdb"; // System.Data.OleDb.OleDbConnectionのインスタンスを作成 DbConnection dbCon = new System.Data.OleDb.OleDbConnection(sCon); // DbConnectionのオブジェクトから、DataContextを作成する DataContext db = new DataContext(dbCon); で出来る。 LINQは、.Net Frameworkで扱えるオブジェクトに対する「汎用クエリ機能」なので、データベースやXML以外にも適用できる。 たとえば、以下の様なちょっと複雑なソート処理は private static int Compare(int x, int y) { int result = (x % 3) - (y % 3); if (result == 0) { result = y - x; } return result; } private void Test() { int[] numbers = { 1, 3, 5, 7, 9, 2, 4, 6, 8 }; Array.Sort(numbers, Compare); foreach (var i in numbers) { Console.Write("{0} ", i); } Console.WriteLine(); } LINQを使うと private void Test() { int[] numbers = { 1, 3, 5, 7, 9, 2, 4, 6, 8 }; foreach (var i in numbers.OrderBy(i = i % 3).ThenByDescending(i = i)) { Console.Write("{0} ", i); } Console.WriteLine(); } と記述できる。 ただし、LINQはあくまでも「クエリ」処理を行うものなので、Array.Sortメソッドの様に、データソース自体を変更する事は無い。 上記の処理で、データソースを変更したい場合は、 numbers = numbers.OrderBy(i = i % 3).ThenByDescending(i = i).ToArray(); と並べ替えメソッドの最後に、ToArray()をつけ、その時点での問い合わせ結果を配列オブジェクトとして生成する。 また、 private void Test() { int[] numbers = { 1, 3, 5, 7, 9, 2, 4, 6, 8 }; // 配列全体の平均値 Console.WriteLine(numbers.Average()); // 配列の要素数 (numbers.Lengthと同じ) Console.WriteLine(numbers.Count()); // 配列内の5以下の数値の平均値 Console.WriteLine(numbers.Where(i= (i =5)).Average()); // 配列内の偶数値の要素数 Console.WriteLine(numbers.Where(i = (i =5)).Count()); } の様な事も出来る。 ファイル名検索 System.IO.DirectoryクラスのGetFilesメソッドを使うとファイル名を手軽に指定したディレクトリ下のファイルをフルパスで文字列配列として取得できる。 string[] sFiles = Directory.GetFiles(@"c \temp"); とすると、c \tempディレクトリ下のファイル名を取得できる。 string[] sFiles = Directory.GetFiles(@"c \temp", "*.txt"); とすると、c \tempディレクトリ下の、拡張子がtxtのファイル名を取得できる。 ただし、上記の方法では、サブディレクトリ下を検索していない。 そこで、サブディレクトリも検索対象とする場合は、SearchOptionを指定し、 string[] sFiles = Directory.GetFiles(@"c \temp", "*.txt", SearchOption.AllDirectories); とする事で、c \temp以下の全てのディレクトリ下にある、拡張子がtxtのファイルを取得できる。 なお、無効なディレクトリを指定した場合は、例外が発生する。 ファイルやディレクトリの存在確認 System.IO.FileクラスのExistsメソッドを使うとファイルの存在確認が手軽に実現できる。 if (File.Exists(@"c \temp\foo.txt")) { // ファイルが存在する } また、System.IO.DirectoryクラスのExistsメソッドを使えば、ディレクトリの存在確認を行える。 Drag Drop Drag Dropを実現するためには フォームのAllowDropプロパティをtrueにする Drag Dropの準備を行うDragEnterイベントを作成する Drag Dropされたファイル名などを受け取るDragDropイベントを作成する を行う必要がある。 Drag Dropで複数のファイルを受け取る処理の場合、 private void Form1_DragEnter(object sender, DragEventArgs e) { // ファイルをDrag Dropの処理対象にする場合 if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.All; } private void Form1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] sFiles = (string[])e.Data.GetData(DataFormats.FileDrop); Array.Sort(sFiles); // ファイル名を並べ替えたいときには必要 foreach (string sFileName in sFiles) Console.WriteLine(sFileName); } } の様になる。 コレクション コレクションの中身を順次処理する場合、 Dictionary string, string dic = new Dictionary string, string (); dic.Add("Jan", "睦月"); dic.Add("Feb", "如月"); … foreach (string sKey in dic.Keys) { Console.WriteLine(dic[sKey]); } の様に、foreachを使用する事が多いと思うが、foreach中でコレクションを処理しながら、削除処理を行う foreach (string sKey in dic.Keys) { Console.WriteLine(dic[sKey]); dic.Remove(sKey); } の様な処理を実行すると、コレクションが変更されたと言う事で、InvalidOperationExceptionの例外が発生する。 この様なときには、 string[] sKeys = new string[dic.Count]; dic.Keys.CopyTo(sKeys, 0); foreach (string sKey in sKeys) { Console.WriteLine(dic[sKey]); dic.Remove(sKey); } と、キー(dic.Keys)の値をCopyToメソッドを使用して一旦取り出して処理をすると良い?
https://w.atwiki.jp/chaka-poko/pages/22.html
ASP.NET(VB) コントロール コントロールのBackColorをRGBで指定する ToolTipの表示内容を改行 DataList DBに登録したバイナリデータをDataListに表示 ファイル関連 バイナリ・データをデータベースに登録する バイナリ・データを表示する その他 テーマ・CSS研究 画像を縮小して表示する(ASP.NET) [Counter] Total: -
https://w.atwiki.jp/wicky/pages/57.html
beforeFind …何か検索が実行される前に必ず呼び出される。
https://w.atwiki.jp/asaosiraserutori/pages/37.html
Net本屋さん どうも暇な本屋さんです。1500円から送料無料らしいです。 じきにDVDとかCDも出てきます。 話題の本 htmlプラグインエラー このプラグインを使うにはこのページの編集権限を「管理者のみ」に設定してください。 リクエスト 本をリクエストすることもできます。 リクエストされた本 Net本屋さんにリクエストする |トップ|リクエスト本|Net本屋さんにリクエストする|
https://w.atwiki.jp/freegamemusic/pages/102.html
概要 使用されている作品 曲一覧 概要 サイト:http //www.sentive.net/ 使用されている作品 寄生ジョーカー Knight Night 曲一覧 曲名 ファイル名 使用作品 備考 作曲者 鉄格子の夜 kanasii.mp3 寄生ジョーカー SENTIVE 紅い空気 kyouhu.mp3 欲望の渦 odoro.mp3 Be-Hind pinch.mp3 M-OTHER youkan.mp3 洋館の中 Steals Near souko.mp3 すくった水は零れ落ちて… staffroll.mp3 雨上がりの空の下 ( lo mix ) 変わらない道-muu.mp3 Knight Night スタッフロール
https://w.atwiki.jp/akanedai/pages/6.html
あかね台.net http //akanedai.net
https://w.atwiki.jp/spam_report/pages/24.html
so-netに通報 ヘルプページがとっても親切でデザインが良い。 だけど載ってなくて問い合わせたら親切に答えてくれた。 注意事項も含めて書いてくれたので本文ごと載せとく。